package com.freemalll.merchant.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.freemalll.merchant.domain.entity.MerMerchant;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 映射层。
 *
 * @author songshixiong
 * @since 2025-05-14
 */
@Mapper
public interface MerMerchantMapper extends BaseMapper<MerMerchant> {

    /**
     * 检查是否存在商户
     *
     * @param limitTheNumberOfDays
     * @param licenseCode
     * @param authStatus
     * @return
     */
    boolean checkIfThereIsAMerchantPresent(@Param("limitTheNumberOfDays") int limitTheNumberOfDays, @Param("licenseCode") String licenseCode, @Param("authStatus") List<String> authStatus, @Param("merId") String merId);

    /**
     * @param merId
     * @param limitTheNumberOfDays
     * @param authStatus
     * @return
     */
    boolean checkReturnTime(@Param("merId") String merId, @Param("limitTheNumberOfDays") int limitTheNumberOfDays, @Param("authStatus") String authStatus);

    /**
     * 校验商户名称是否存在，校验对象为authStatus 中包含的审核状态
     *
     * @param merchantName
     * @param authStatus
     * @return
     */
    boolean checkMerchantName(@Param("merchantName") String merchantName, @Param("authStatus") List<String> authStatus, @Param("merId") String merId);

    /**
     * 校验商户营业执照是否存在，校验对象为authStatus 中包含的审核状态
     *
     * @param licenseCode
     * @param authStatus
     * @return
     */
    boolean checkMerchantLicenseCode(@Param("licenseCode") String licenseCode, @Param("authStatus") List<String> authStatus, @Param("merId") String merId);

    /**
     * 校验商户名称是否存在，校验对象为authStatus 中包含的审核状态 排除自身
     *
     * @param limitTheNumberOfDays
     * @param merchantName
     * @param authStatus
     * @param merId
     * @return
     */
    boolean checkMerchantNameAndLimitDay(@Param("limitTheNumberOfDays") int limitTheNumberOfDays, @Param("merchantName") String merchantName, @Param("authStatus") List<String> authStatus, @Param("merId") String merId);

    /**
     * 校验商户简称是否存在，校验对象为authStatus 中包含的审核状态
     *
     * @param merchantShortName
     * @param authStatus
     * @return
     */
    boolean checkMerShortNameAndLimitDay(@Param("limitTheNumberOfDays") int limitTheNumberOfDays, @Param("merchantShortName") String merchantShortName, @Param("authStatus") List<String> authStatus, @Param("merId") String merId);

    /**
     * 校验商户简称是否存在，校验对象为authStatus 中包含的审核状态
     *
     * @param merchantShortName
     * @param authStatus
     * @return
     */
    boolean checkMerShortName(@Param("merchantShortName") String merchantShortName, @Param("authStatus") List<String> authStatus, @Param("merId") String merId);
}
